• Here's a good way to start seeing what xlisp can do: load "hanoi.lsp" and type "(hanoi 3)", then load "turtle.lsp" and type "(graphicsdemo)". Then have fun from there.
• The manual was written for the DOS and Unix versions of xlisp. I haven't updated it to cover the Macintosh version, but I don't think any changes are necessary.
• You can load a file from the xlisp command line by giving its full pathname, as in (load "hard drive:folder:file.lsp"). Partial pathnames rely on the "default directory," which can get changed often, so they might not always work.
• There were absolutely no changes made to the "official" XLisp 2.1g source code files to generate this Macintosh version, except that a Macintosh-specific section had to added to the file "xlisp.h". Therefore, the functionality of xlisp on the Macintosh should be absolutely identical to its functionality on other operating systems. If you ever find this isn't the case, please let me know.
• Parens and double-quotes are matched (flashed) as you type them. You can edit your commands across several lines; the entire command is only sent to the xlisp engine for parsing when you press Return after closing all sets of parens in your command. If you have a special case where you want xlisp to parse everything you've typed so far even though it doesn't think the command is complete yet, press Enter.
• The paren-matching routine doesn't check for parens within comments because I didn't bother to write code yet to make it do so. This just means that when you type "( ; )", the close-paren will match the open-paren, even though it probably shouldn't. If however you type "( ; (" then a ")" on the next line, xlisp won't think the expression is complete so it'll just sit there; you'll have to press Enter to get it to evaluate. But how many times do you do something like this in real programming, eh? Also note that comments like #| this |# aren't recognized (and therefore not handled properly) by the interface, although you can use them in your Lisp code without problems.
• Everything works fine on multi-monitor systems except that window zooming and Split Screen use the main monitor, instead of the monitor that the windows are on. If someone cares to give me another monitor, I'll be glad to work on fixing this. :-)
• The graphics window isn't really handled properly (it doesn't get refreshed).
• I don't plan to add a built-in text editor to xlisp, because I recommend that people use an external text editor like Alpha or BBEdit for editing. (That's what modular programming is all about, anyway.) I plan to add AppleEvent functionality to xlisp in the future, so you'll be able to evaluate Lisp expressions from external editors, and I might even make it scriptable.
• The speed (or lack thereof) of xlisp is due to the fact that it's interpreted, not compiled. Compiled Lisps (such as MCL) will run circles around xlisp, but then again MCL costs several hundred dollars and uses ten megs of disk space.
• xlisp will process in the background, while you work in other applications.
• The function read-char does not work correctly, so step.lsp and stepper.lsp won't work. I may have to hack Tom Almy's xlisp base code to get that to function properly.
• If you enter several commands on one line, a prompt will be printed before the results of all commands after the first one. This is a bug in the xlisp engine.
• I still haven't thought of a clean way to handle making toolbox calls from xlisp, so I haven't implemented it yet. There will probably need to be some way of having the interpreter know about every single toolbox routine, where it is in ROM, and how many arguments it takes and what kinds of arguments they are.
• The sample files "turtle.lsp" and "dragon.lsp" have been rewritten to run properly on the Mac. However, "turtles.lsp" has not been rewritten, and will not work properly on the Mac. I've left it here because it demonstrates how to use classes, and because I might rewrite it at some point. Some of the other sample files also may not work.
• If you launch xlisp by double-clicking on lisp files or drag-dropping them onto the xlisp application, then the files will be run before init.lsp gets run. This can pose a problem if they try to use anything that init.lsp sets up (such as the *features* global variable). This is a bug.
• Note that you can type "(exit)" to quit xlisp. Neat, huh?
This code is subject to any restrictions that have been placed on the original xlisp distribution, and may be freely distributed. You may only make publically available any program that uses a derivative of my Macintosh-specific source code if you provide me with an unrestricted copy of your source code changes at the same time. I am not responsible for any damages that may result from the use of this program, and I am not obligated to fix any bugs or add any features to it.
If you have any comments or suggestions about this Macintosh port of xlisp, feel free to email me at bskendig@netcom.com.